/**
 ****************************************************************************************************
 * @file        Lowpass_Filter.h
 * @version     V1.0
 * @date        2022-06-21
 * @brief       低通滤波器算法头文件
 ****************************************************************************************************
 */

#ifndef __LOWPASS_FILTER_H
#define __LOWPASS_FILTER_H

/**
 * @brief   时变低通滤波器结构体定义
 * @note    包含滤波时间常数和历史状态数据
 */
struct LOWPASS{
	float Tf;          /* 滤波时间常数（单位：秒），决定滤波强度，值越大滤波效果越强 */
	float Last_Timesamp; /* 上一次采样的时间戳（系统滴答计数器值） */
	float Last_y;      /* 上一次滤波后的输出值 */
};

/**
 * @brief   简单一阶低通滤波器函数声明
 * @param   x - 输入信号值
 * @retval  滤波后的输出信号值
 */
float Lowpassfilter_sim(float x);

/**
 * @brief   时变一阶低通滤波器函数声明
 * @param   lowpass - 低通滤波器结构体指针，包含滤波参数和历史数据
 * @param   x - 输入信号值
 * @retval  滤波后的输出信号值
 */
float Lowpassfilter(struct LOWPASS *lowpass, float x);

#endif
